#pragma once
#include "stdafx.h"

namespace OrionFlames
{
#ifdef WIN32
	#ifdef BUILDING_ORION_FLAMES//Building...
		#define OFAPI __declspec(dllexport)
		#define EXPIMP_TEMPLATE
	#else//Linking...
		#define OFAPI __declspec(dllimport)
		#define EXPIMP_TEMPLATE extern
	#endif
#endif

//Rather than have a complicated logic tree, just check if they've been defined by this point. If not, define them as nothing.
#ifndef OFAPI
	#define OFAPI
#endif

#ifndef EXPIMP_TEMPLATE
	#define EXPIMP_TEMPLATE
#endif

//This was all crap to silence the MSVC compiler. Might not apply to other systems.
#define EXPORT_STL_VECTOR(dllmacro, vectype) \
EXPIMP_TEMPLATE template class dllmacro std::allocator< vectype >; \
EXPIMP_TEMPLATE template class dllmacro std::vector<vectype, std::allocator< vectype > >;

//#define EXPORT_STL_STRING(dllmacro, stringtype) \
//	EXPIMP_TEMPLATE template class dllmacro std::_String_val<stringtype, std::allocator<stringtype> >; \
//	EXPIMP_TEMPLATE template class dllmacro std::basic_string<stringtype>; \
//	EXPIMP_TEMPLATE template class dllmacro std::allocator<stringtype>; \
	//EXPIMP_TEMPLATE template class dllmacro std::_String_val<stringtype, std::allocator<stringtype> >::_Alval;

using namespace std;
}